import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium自动化测试.loctor import *
"""
元素和操作步骤分开
便于后面维护脚本
"""
# 作业2：
# 1、打开百度：https://www.baidu.com/，输入：刘超班长，点击搜索
# 2、点击第二个链接：刘超战斗英雄
# 3、断言当前页面，是否进入正确，分别看title标题和文章内容
# 4、点击：文章中的东北野战军链接
# 5、断言：中国人民解放军第四野战军，是否正确
# 6、在上方词条清空，输入：刘能，点击进入词条
# 7、断言当前页面，是否进入正确，分别看title标题和文章内容
# 8、点击文章中的：乡村爱情
# 9、断言当前页面，是否进入正确，分别看title标题和文章内容
# 10、点击导演：张慧中
# 11、点击文章中的：法库县
# 12、断言当前页面，是否进入正确，分别看title标题和文章内容
class Baidu:
    def __init__(self,driver,url):
        self.driver = driver
        self.url = url
    def open_url(self):
        # 打开网页
        self.driver.get("https://www.baidu.com/")
        # 全屏最大化
        self.driver.maximize_window()
        # 设置隐式等待
        self.driver.implicitly_wait(15)
    def searchConetnt(self,text):
        # 输入刘超班长
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(input_content)).send_keys(text)
        # 点击搜索按钮
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(searchBtn)).click()
        #点击第二个链接：刘超战斗英雄
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(a2)).click()
        # 句柄切换
        win = self.driver.window_handles
        self.driver.switch_to.window(win[-1])
        sleep(1)
    def assertText(self):
        # 断言当前页面，是否进入正确，分别看title标题和文章内容
        title = self.driver.title
        assert "刘超（战斗英雄）_百度百科" == title
        text = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(assert1)).text
        assert text == "刘超"
    def clickA(self):
        # 点击：文章中的东北野战军链接
        sleep(2)
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(clickDB)).click()
        # 句柄切换
        win = self.driver.window_handles
        self.driver.switch_to.window(win[-1])
    def assertText2(self):
        # 断言
        time.sleep(3)
        text = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(assert2)).text
        assert text == "中国人民解放军第四野战军"
        title = self.driver.title
        assert title == "中国人民解放军第四野战军_百度百科"
    def searchCI(self):
        # 在上方词条清空，输入：刘能，点击进入词条
        inputs = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_all_elements_located(searchCi))[0]
        inputs.clear()
        inputs.send_keys("刘能")
        # 点击搜索
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_all_elements_located(clickSearchBtn))[0].click()
    def assertText3(self):
        # 断言当前页面，是否进入正确，分别看title标题和文章内容
        title = self.driver.title
        assert "刘能（电视剧《乡村爱情》系列中的重要角色）_百度百科" == title
        text = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(assert3)).text
        assert text == "刘能"
    def clickXC(self):
        # 点击文章中的：乡村爱情
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(clickXC)).click()
        # 句柄切换
        win = self.driver.window_handles
        self.driver.switch_to.window(win[-1])
        sleep(2)
        # 点击导演：张慧中
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_all_elements_located(daoyan_zhz))[11].click()
        # 句柄切换
        win = self.driver.window_handles
        self.driver.switch_to.window(win[-1])
        sleep(3)
        # 点击文章中的：法库县
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(clickFK)).click()
        # 句柄切换
        win = self.driver.window_handles
        self.driver.switch_to.window(win[-1])
        sleep(2)
    def assertText4(self):
        # 断言当前页面，是否进入正确，分别看title标题和文章内容
        title = self.driver.title
        assert "法库县_百度百科" == title
        text = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(assert4)).text
        assert text == "法库县"
        sleep(5)

if __name__ == '__main__':
    browser = webdriver.Chrome()
    url = "https://www.baidu.com/"
    b1 = Baidu(browser,url)
    b1.open_url()
    b1.searchConetnt("刘超班长")
    b1.assertText()
    b1.clickA()
    b1.assertText2()
    b1.searchCI()
    b1.assertText3()
    b1.clickXC()
    b1.assertText4()